package com.chepaandvasia.dao;

import java.util.Date;
import java.util.List;

import com.chepaandvasia.entities.Car;
import com.chepaandvasia.entities.ServiceCheck;


public interface ServiceCheckDAO {
	   /*
     * This method inserts ServiceCheck serviceCheck in the database.
     * While inserting, serviceCheck is given unique id
     * @param serviceCheck instance of ServiceCheck  to be created     
     */
    public void create(ServiceCheck serviceCheck);

    /*
     * This method updates state of ServiceCheck into database
     * @param serviceCheck instance of ServiceCheck to be updated in database     * 
     */
    public void update(ServiceCheck serviceCheck);

    /*
     * This method removes ServiceCheck serviceCheck from database.
     * @param serviceCheck instance of ServiceCheck to be removed
     */
    public void remove(ServiceCheck serviceCheck);
    
    /*
     * This method get instance of ServiceCheck, specified with given id, from database.
     * @param id id of ServiceCheck to be retrieved
     * @return instance of ServiceCheck with given id     
     */
    public ServiceCheck get(Long id);
    
    /*
     * This method finds all available serviceChecks for given car.
     * @param car instance of Car
     * @return list of ServiceChecks of given car
     */
    public List<ServiceCheck> findAllServiceChecksForCar(Car position);

    
    /*
     * This method find all serviceChecks including serviceChecks on service check.
     * @return list of all ServiceChecks 
     */
    public List<ServiceCheck> findAllServiceChecks();
        
    /*
     * This methd return all ServiceChecks with selected dateOfCheck
     * @param dateOfCheck = Date
     * @return list of all ServiceChecks with this dateOfCheck
     */
    public List<ServiceCheck> getServiceChecksByDateOfCheck(Date dateOfCheck);
    
    /*
     * This methd return all ServiceChecks with selected lastCheck
     * @param lastCheck = int
     * @return list of all ServiceChecks with this lastCheck
     */
    public List<ServiceCheck> getServiceChecksByLastCheck(int lastCheck);
  
    /*
     * This methd return all ServiceChecks with selected checkInterval
     * @param checkInterval = int
     * @return list of all ServiceChecks with this checkInterval
     */
    public List<ServiceCheck> getServiceChecksByCheckInterval(int checkInterval);
   
    /*
     * This methd return all ServiceChecks with selected checkPurpose
     * @param checkPurpose = String
     * @return list of all ServiceChecks with this checkPurpose
     */
    public List<ServiceCheck> getServiceChecksByCheckPurpose(String checkPurpose);
    
    /*
     * This methd return all ServiceChecks with selected checkDone
     * @param checkDone =Boolean
     * @return list of all ServiceChecks with this checkDone
     */
    public List<ServiceCheck> getServiceChecksByCheckDone(Boolean checkDone);
    
    /*
     * This methd return all ServiceChecks with selected isActive
     * @param isActive =Boolean
     * @return list of all ServiceChecks with this isActive
     */
    public List<ServiceCheck> getServiceChecksByIsActive(Boolean isActive);
} 